Installing the packages and loading the data

library(forecast)
## Warning: package 'forecast' was built under R version 3.4.4
library(ggplot2)

tv <- read.csv("TV_by_network_daypart.csv")

Let us convert data into a proper format

tvf <- sub('(.{4})(.{2})',"\\1-\\2", tv$date)
tvf <-  as.Date(paste0(tvf, "-01"), "%Y-%m-%d")
tv$date <- tvf

Let us split data based on the network type and daypart

out <- split(tv,list(tv$network,tv$daypart))

plot.ts(tv)

for (i in 1:length(out)) {
  assign(paste0("tv_ts", i), as.data.frame(out[[i]]))
}

We create a function which gives us insights about the 55 time series created based on network type and daypart

traintest <- function(a)
{
  temp <- a
  train <- subset(temp, temp$date < "2017-01-01" & temp$date >= "2013-01-01")
  test <- subset(temp, temp$date >= "2017-01-01")
  
  timeseries <- ts(train$viewers, start = 2014-01-01 ,frequency = 12)
  timeseries1 <- ts(test$viewers, start = 2017-01-01 ,frequency = 12)
  
  plot.ts(timeseries)
  ts_stl <- stl(timeseries, s.window = "period")
  plot(ts_stl)
  ts_acf <- acf(timeseries)
  ts_pacf <- pacf(timeseries)
  
  ts_decompose = decompose(timeseries, "additive")
  #autoplot(ts_decompose) + theme_minimal()
  plot(ts_decompose) 
  
  par(mfrow = c(1,1))
  ts_Hw <- HoltWinters(timeseries)
  ts_forecast <- forecast(ts_Hw, h =12)
  #autoplot(ts_forecast) + theme_minimal()
  plot(ts_forecast) 
  lines(timeseries1, col = 'red')
  
  mean(abs(test$viewers - ts_forecast$mean ))
  
}

We call the function for all the 55 time series

traintest(tv_ts1)

## [1] 20.52022
traintest(tv_ts2)

## [1] 60.27782
traintest(tv_ts3)

## [1] 93.10595
traintest(tv_ts4)

## [1] 13.07586
traintest(tv_ts5)

## [1] 36.1841
traintest(tv_ts6)

## [1] 14.46771
traintest(tv_ts7)

## [1] 51.74338
traintest(tv_ts8)

## [1] 56.29067
traintest(tv_ts9)

## [1] 10.7754
traintest(tv_ts10)

## [1] 17.68645
traintest(tv_ts11)

## [1] 19.5647
traintest(tv_ts12)

## [1] 45.32363
traintest(tv_ts13)

## [1] 65.99625
traintest(tv_ts14)

## [1] 15.02938
traintest(tv_ts15)

## [1] 52.38683
traintest(tv_ts16)

## [1] 10.81039
traintest(tv_ts17)

## [1] 85.63665
traintest(tv_ts18)

## [1] 36.28251
traintest(tv_ts19)

## [1] 190.8097
traintest(tv_ts20)

## [1] 86.44478
traintest(tv_ts21)

## [1] 31.60935
traintest(tv_ts22)

## [1] 99.76095
traintest(tv_ts23)

## [1] 99.73155
traintest(tv_ts24)

## [1] 14.73406
traintest(tv_ts25)

## [1] 53.5617
traintest(tv_ts26)

## [1] 12.68668
traintest(tv_ts27)

## [1] 23.47888
traintest(tv_ts28)

## [1] 28.49202
traintest(tv_ts29)

## [1] 12.72243
traintest(tv_ts30)

## [1] 40.78742
traintest(tv_ts31)

## [1] 37.53029
traintest(tv_ts32)

## [1] 28.41601
traintest(tv_ts33)

## [1] 68.66555
traintest(tv_ts34)

## [1] 28.7374
traintest(tv_ts35)

## [1] 73.21512
traintest(tv_ts36)

## [1] 82.10259
traintest(tv_ts37)

## [1] 99.05151
traintest(tv_ts38)

## [1] 178.7292
traintest(tv_ts39)

## [1] 92.76801
traintest(tv_ts40)

## [1] 124.1401
traintest(tv_ts41)

## [1] 39.82747
traintest(tv_ts42)

## [1] 103.7571
traintest(tv_ts43)

## [1] 215.2595
traintest(tv_ts44)

## [1] 18.49259
traintest(tv_ts45)

## [1] 68.41505
traintest(tv_ts46)

## [1] 8.875389
#traintest(tv_ts47)
traintest(tv_ts48)

## [1] 48.63877
traintest(tv_ts49)

## [1] 21.82742
#traintest(tv_ts50)
traintest(tv_ts51)

## [1] 42.66445
traintest(tv_ts52)

## [1] 74.74314
traintest(tv_ts53)

## [1] 153.1797
traintest(tv_ts54)

## [1] 19.6662
traintest(tv_ts55)

## [1] 52.7505